Skill

Apex এবং Asynchronous Processing (Apex and Asynchronous Processing)

Computer Programming - এপেক্স (Apex)
268
268

Apex এবং Asynchronous Processing Salesforce প্ল্যাটফর্মে বড় ডেটাসেট, লং-রানিং অপারেশন, বা জটিল প্রসেসিং পরিচালনার জন্য একটি গুরুত্বপূর্ণ কৌশল। Asynchronous Processing-এর মাধ্যমে কোডটি অবিলম্বে চলতে পারে না, বরং ব্যাকগ্রাউন্ডে প্রক্রিয়া চালাতে থাকে, যা Governor Limits এবং ট্রানজ্যাকশন টাইমআউটের সমস্যাগুলো এড়িয়ে কার্যকরভাবে কাজ সম্পন্ন করে।


Asynchronous Processing কেন গুরুত্বপূর্ণ?

Asynchronous Processing Salesforce-এর জন্য খুবই গুরুত্বপূর্ণ, কারণ এটি:

  1. Governor Limits বজায় রাখতে সহায়ক: বড় ডেটাসেট নিয়ে কাজ করার সময় Asynchronous Processing ট্রানজ্যাকশন ভেঙে ভেঙে কাজ করে গভর্নর লিমিট মেনে চলে।
  2. লং-রানিং অপারেশন সম্পন্ন করা: বড় ডেটা প্রসেসিং বা বহিরাগত সিস্টেমে ইন্টিগ্রেশন সম্পন্ন করতে পারে।
  3. ব্যাকগ্রাউন্ড প্রসেসিং: ফ্রন্টএন্ড বা ব্যবহারকারী ইন্টারফেসকে লোড না দিয়ে ব্যাকগ্রাউন্ডে প্রক্রিয়াকরণ চালিয়ে যাওয়া যায়।

Apex এর মধ্যে Asynchronous Processing এর বিভিন্ন ধরন

Salesforce-এ Asynchronous Processing এর কয়েকটি প্রধান ধরন রয়েছে, যেমন Future Methods, Batch Apex, Queueable Apex, এবং Scheduled Apex

১. Future Methods

Future Methods @future অ্যানোটেশন ব্যবহার করে ঘোষণা করা হয়। এটি লং-রানিং প্রসেসের জন্য ব্যবহার করা হয় এবং পৃথক ট্রানজ্যাকশনে কাজ সম্পন্ন করে। Future Methods সাধারণত ওয়েব সার্ভিস কলআউট এবং বড় ডেটাসেট প্রসেসিংয়ের জন্য ব্যবহার করা হয়।

Future Methods এর বৈশিষ্ট্য:

  • গভর্নর লিমিট এড়াতে সহায়ক।
  • @future অ্যানোটেশন দিয়ে ঘোষণা করা হয়।
  • Parameter Limitations: Future মেথডে শুধুমাত্র primitive ডেটা টাইপ (List বা Map সহ) পাস করা যায়।

উদাহরণ:

public class FutureExample {
    @future
    public static void updateAccountIndustry(Set<Id> accountIds) {
        List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Id IN :accountIds];
        for (Account acc : accounts) {
            acc.Industry = 'Technology';
        }
        update accounts;
    }
}

২. Batch Apex

Batch Apex বড় ডেটাসেটকে ছোট ছোট অংশে ভাগ করে প্রসেস করতে ব্যবহৃত হয়। এটি Database.Batchable ইন্টারফেস ইমপ্লিমেন্ট করে এবং বড় ট্রানজ্যাকশনের ক্ষেত্রে খুব কার্যকর।

Batch Apex এর বৈশিষ্ট্য:

  • গভর্নর লিমিট এড়িয়ে বড় ডেটাসেট পরিচালনা করে।
  • Database.Batchable ইন্টারফেস ইমপ্লিমেন্ট করে।
  • প্রতিটি ব্যাচ একক ট্রানজ্যাকশন হিসেবে কাজ করে।

উদাহরণ:

public class AccountBatchJob implements Database.Batchable<SObject> {
    public Database.QueryLocator start(Database.BatchableContext bc) {
        return Database.getQueryLocator('SELECT Id, Name FROM Account');
    }

    public void execute(Database.BatchableContext bc, List<SObject> scope) {
        List<Account> accounts = (List<Account>) scope;
        for (Account acc : accounts) {
            acc.Name = 'Batch Updated';
        }
        update accounts;
    }

    public void finish(Database.BatchableContext bc) {
        System.debug('Batch Process Completed');
    }
}
  • এখানে execute মেথডের মাধ্যমে প্রতিটি ব্যাচের জন্য নির্দিষ্ট কোড চালানো হচ্ছে।
  • finish মেথডে সম্পূর্ণ ব্যাচ প্রসেসিং শেষে কোড চলবে।

৩. Queueable Apex

Queueable Apex Queue এ একটি কাজ বা জব রাখে, যা পরে ব্যাকগ্রাউন্ডে একের পর এক প্রক্রিয়া চালায়। এটি Future মেথডের উন্নত সংস্করণ এবং চেইনিং সমর্থন করে।

Queueable Apex এর বৈশিষ্ট্য:

  • Future Methods এর সীমাবদ্ধতা কাটিয়ে উঠে।
  • চেইনিং সমর্থন করে, যার মাধ্যমে একাধিক Queueable Jobs ক্রমান্বয়ে চালানো যায়।
  • Database.Queueable ইন্টারফেস ইমপ্লিমেন্ট করে।

উদাহরণ:

public class QueueableExample implements Queueable {
    public void execute(QueueableContext context) {
        List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Industry = 'Finance'];
        for (Account acc : accounts) {
            acc.Industry = 'Banking';
        }
        update accounts;
    }
}

// Queueable job কল করার জন্য
Id jobId = System.enqueueJob(new QueueableExample());
  • এখানে execute মেথডে Queueable Job চালানো হয়েছে।

৪. Scheduled Apex

Scheduled Apex নির্দিষ্ট সময় পরপর বা নির্ধারিত সময়ে কাজ সম্পন্ন করতে ব্যবহৃত হয়। এটি Schedulable ইন্টারফেস ইমপ্লিমেন্ট করে।

Scheduled Apex এর বৈশিষ্ট্য:

  • নির্দিষ্ট সময়ে কাজ চালানো যায়।
  • Cron Expression ব্যবহার করে কাজের সময় নির্ধারণ করা হয়।

উদাহরণ:

public class ScheduledExample implements Schedulable {
    public void execute(SchedulableContext context) {
        List<Account> accounts = [SELECT Id FROM Account WHERE CreatedDate = LAST_N_DAYS:30];
        System.debug('Accounts created in the last 30 days: ' + accounts.size());
    }
}

// Job Scheduling
String cronExp = '0 0 0 1 * ?'; // প্রতি মাসের ১ তারিখে চালানো হবে
System.schedule('Monthly Account Report', cronExp, new ScheduledExample());
  • এখানে Cron Expression ব্যবহার করে প্রতি মাসের ১ তারিখে কাজ চালানো হয়েছে।

Asynchronous Processing এর সুবিধা

  1. Governor Limits মেনে চলা: বড় ডেটাসেট প্রসেসিং এবং লং-রানিং অপারেশন করতে Asynchronous Processing গভর্নর লিমিট বজায় রেখে কাজ সম্পন্ন করতে সহায়ক।
  2. ব্যাকগ্রাউন্ড প্রসেসিং: ব্যাকগ্রাউন্ডে কাজ সম্পন্ন হওয়ায় ব্যবহারকারীর অভিজ্ঞতা উন্নত হয়।
  3. লং-রানিং অপারেশন: বড় প্রসেসিংয়ের সময় ট্রানজ্যাকশন টাইমআউট এড়িয়ে ব্যাকগ্রাউন্ডে কাজ সম্পন্ন করা যায়।
  4. চেইনিং সমর্থন করে: Queueable Apex এর মাধ্যমে পরপর কাজ চালানো সম্ভব।

কোন পরিস্থিতিতে কোন Asynchronous Technique ব্যবহার করবেন

পরিস্থিতিপ্রযোজ্য Asynchronous Technique
বড় ডেটাসেট প্রসেস করতে হবেBatch Apex
লং-রানিং কাজ বা বহিরাগত সিস্টেমে কলআউটFuture Methods
একাধিক Queueable Job ক্রমান্বয়ে চালানোQueueable Apex
নির্দিষ্ট সময় বা দিন পরপর কাজ চালানোScheduled Apex

সারসংক্ষেপ

  • Future Methods: লং-রানিং প্রসেসের জন্য ব্যবহৃত হয় এবং বহিরাগত কলআউট সমর্থন করে।
  • Batch Apex: বড় ডেটাসেট ছোট ছোট ব্যাচে ভাগ করে প্রসেস করে।
  • Queueable Apex: Future Method এর উন্নত সংস্করণ এবং চেইনিং সমর্থন করে।
  • Scheduled Apex: নির্দিষ্ট সময়ে বা নির্দিষ্ট ইন্টারভালে কাজ চালায়।

Asynchronous Processing এর বিভিন্ন কৌশল ব্যবহার করে Salesforce প্ল্যাটফর্মে বড় ডেটাসেট ও জটিল প্রসেসিং কার্যকরীভাবে পরিচালনা করা সম্ভব, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং Governor Limits বজায় রাখে।

Content added By

Asynchronous Apex এর ধারণা

208
208

Asynchronous Apex হলো এমন একটি প্রক্রিয়া, যেখানে কোড বা প্রক্রিয়াগুলি অন্য প্রক্রিয়া থেকে স্বাধীনভাবে কাজ করে এবং নির্দিষ্ট সময়ে সম্পন্ন হয়। Asynchronous Apex সাধারণত দীর্ঘমেয়াদী, বৃহৎ ডেটা সেট, এবং জটিল লজিক্যাল কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়, যা তাৎক্ষণিকভাবে এক্সিকিউট করার প্রয়োজন নেই।

Salesforce-এ Asynchronous Apex-এর মাধ্যমে বড় ডেটাসেট প্রক্রিয়া এবং সময়সাপেক্ষ কার্যক্রম মূল ট্রানজাকশনের বাইরে চালানো সম্ভব হয়, যা প্ল্যাটফর্মের পারফরম্যান্স এবং কার্যক্ষমতা উন্নত করে।


Asynchronous Apex এর প্রয়োজনীয়তা

গভর্নর লিমিট মেনে চলা: Synchronous Apex-এর গভর্নর লিমিট বেশ সীমিত, তবে Asynchronous Apex-এ কিছু গভর্নর লিমিট বেশি থাকে। যেমন, Synchronous Apex-এ ৬ এমবি Heap Size ব্যবহার করা যায়, যেখানে Asynchronous Apex-এ ১২ এমবি।

বড় ডেটাসেট প্রক্রিয়াকরণ: বড় ডেটাসেট নিয়ে কাজ করতে হলে Synchronous Apex গভর্নর লিমিট দ্রুত অতিক্রম করে, তাই বড় ডেটাসেট বা দীর্ঘমেয়াদী কাজ Asynchronous Apex ব্যবহার করে সম্পন্ন করা যায়।

টাইম-ইনটেনসিভ প্রসেসিং: দীর্ঘমেয়াদী কাজ, যেমন রিপোর্ট প্রসেসিং, বড় SOQL কুয়েরি, অথবা API কল আউট-এর জন্য Asynchronous Apex ব্যবহার কার্যকরী।

ব্যাকগ্রাউন্ড প্রসেসিং: কিছু প্রক্রিয়া যেমন ডেটা ইন্টিগ্রেশন বা ব্যাকগ্রাউন্ড আপডেট, যা ব্যবহারকারীর তাৎক্ষণিক মনোযোগের প্রয়োজন হয় না, সেগুলি Asynchronous Apex ব্যবহার করে সম্পন্ন করা যায়।


Asynchronous Apex এর প্রকারভেদ

Salesforce-এ কয়েকটি গুরুত্বপূর্ণ Asynchronous Apex রয়েছে, যা বিভিন্ন কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়। এগুলো হলো:

  1. Future Methods
  2. Batch Apex
  3. Queueable Apex
  4. Scheduled Apex

১. Future Methods

Future Methods সহজ এবং দ্রুত Async প্রসেসিংয়ের জন্য ব্যবহৃত হয়। যখন কোনো প্রসেসকে Async করতে হয়, তখন সেই মেথডে @future অ্যানোটেশন যুক্ত করতে হয়। Future মেথড ব্যবহার করে লং রানিং প্রসেস যেমন API কল আউট বা বড় SOQL কুয়েরি চালানো যায়।

উদাহরণ:

apex

Copy code

public class FutureExample {
    @future
    public static void processFuture() {
        // Async লজিক
        List<Account> accounts = [SELECT Id, Name FROM Account];
        System.debug('Total Accounts: ' + accounts.size());
    }
}
  • এখানে @future মেথড Async প্রসেসিং হিসেবে কাজ করবে এবং তাৎক্ষণিকভাবে মূল প্রসেসে ব্যাঘাত করবে না।

২. Batch Apex

Batch Apex ব্যবহার করে বড় ডেটাসেটকে ছোট ছোট ব্যাচে ভাগ করে প্রক্রিয়া করা যায়, যা গভর্নর লিমিট অতিক্রম না করে বড় ডেটাসেট প্রক্রিয়াকরণে সহায়ক। Batch Apex-এ ডেটা এক্সিকিউশন ২০০টি রেকর্ডের ব্যাচে বিভক্ত করে চালানো হয়।

উদাহরণ:

public class BatchExample implements Database.Batchable<SObject> {
    public Database.QueryLocator start(Database.BatchableContext BC) {
        return Database.getQueryLocator('SELECT Id, Name FROM Account');
    }

    public void execute(Database.BatchableContext BC, List<SObject> scope) {
        for (SObject s : scope) {
            Account acc = (Account) s;
            acc.Name = acc.Name + ' Updated';
        }
        update scope;
    }

    public void finish(Database.BatchableContext BC) {
        System.debug('Batch process completed.');
    }
}
  • start মেথডে SOQL কুয়েরি সংজ্ঞায়িত করা হয়েছে, যা নির্দিষ্ট ডেটা ফিল্টার করে।
  • execute মেথডে প্রতিটি ব্যাচের ২০০টি রেকর্ড প্রক্রিয়া করা হয়েছে।
  • finish মেথডে ব্যাচ প্রসেস শেষ হলে একটি বার্তা প্রিন্ট করা হয়েছে।

৩. Queueable Apex

Queueable Apex হলো Future Methods-এর একটি উন্নত সংস্করণ, যা চেইনিং এবং কনস্ট্রাক্টর ব্যবহার করে ডেটা প্রক্রিয়াকরণকে আরও কার্যকর করে। Queueable Apex-এ চেইনড প্রসেস চালানো যায় এবং API কল, SOQL কুয়েরি, DML অপারেশন করা যায়।

উদাহরণ:

public class QueueableExample implements Queueable {
    public void execute(QueueableContext context) {
        List<Account> accounts = [SELECT Id, Name FROM Account];
        for (Account acc : accounts) {
            acc.Name = acc.Name + ' Processed';
        }
        update accounts;
    }
}
  • এখানে execute মেথড Queueable Context-এ Async প্রসেসিং চালাচ্ছে এবং মূল Transaction-কে ব্যাহত করছে না।

৪. Scheduled Apex

Scheduled Apex ব্যবহার করে নির্দিষ্ট সময়ে কোনো Apex কোড বা প্রসেস চালানো যায়। এটি একটি শিডিউল অনুযায়ী চলতে পারে, যেমন প্রতিদিন, সপ্তাহে, বা নির্দিষ্ট তারিখে।

উদাহরণ:

public class ScheduledExample implements Schedulable {
    public void execute(SchedulableContext sc) {
        List<Account> accounts = [SELECT Id, Name FROM Account];
        for (Account acc : accounts) {
            acc.Name = acc.Name + ' Scheduled';
        }
        update accounts;
    }
}
  • এটি চালানোর জন্য নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:
String cronExp = '0 0 12 * * ?';
System.schedule('Daily Account Update', cronExp, new ScheduledExample());
  • cronExp দ্বারা শিডিউল নির্ধারণ করা হয়েছে, যা প্রতিদিন ১২টায় ScheduledExample ক্লাস চালাবে।

Asynchronous Apex এর সুবিধা

গভর্নর লিমিট মেনে বড় প্রসেসিং: Asynchronous Apex গভর্নর লিমিটের সীমার মধ্যে বড় ডেটাসেট প্রক্রিয়া করতে সহায়ক।

ব্যাকগ্রাউন্ড প্রসেসিং সক্ষমতা: ব্যবহারকারীর তাৎক্ষণিক মনোযোগ ছাড়াই বড় প্রসেসিং ব্যাকগ্রাউন্ডে চালানো যায়।

কাস্টম শিডিউলিং: নির্দিষ্ট সময়ে প্রসেস চালানো বা নির্দিষ্ট সময়ের পরে কাজ সম্পন্ন করতে Scheduled Apex ব্যবহার করা যায়।

চেইনিং এবং কনস্ট্রাক্টর ব্যবহার: Queueable Apex-এ একাধিক Async প্রসেস চেইনিং এর মাধ্যমে চালানো যায় এবং কনস্ট্রাক্টরের মাধ্যমে ডেটা প্রেরণ করা যায়।


Asynchronous Apex ব্যবহারের ভালো অনুশীলন

Governor Limits মনিটর করা: Async Apex-এর জন্য গভর্নর লিমিট জানুন এবং সেই সীমার মধ্যে কোড অপ্টিমাইজ করুন।

Batch Size ছোট রাখা: বড় ডেটাসেট প্রক্রিয়াকরণে Batch Apex ব্যবহার করুন এবং প্রয়োজন অনুযায়ী ব্যাচ সাইজ নির্ধারণ করুন।

চেইনিং এড়িয়ে চলুন (বেশি না): Queueable Apex-এ প্রচুর চেইনিং এড়িয়ে চলুন; এতে গভর্নর লিমিট অতিক্রমের ঝুঁকি থাকে।

Exception Logging: Asynchronous Apex-এ Exception Logging এবং ডিবাগিং যুক্ত করুন, যাতে ত্রুটি সনাক্ত করা সহজ হয়।


সংক্ষেপে

Asynchronous Apex Salesforce-এ বড় ও দীর্ঘমেয়াদী কাজ সম্পন্ন করতে সহায়ক, যা গভর্নর লিমিটের মধ্যে কার্যক্রম সম্পন্ন করে। Future Methods, Batch Apex, Queueable Apex, এবং Scheduled Apex-এর মাধ্যমে কার্যক্ষম ও সময়মাফিক প্রক্রিয়াকরণ নিশ্চিত করা যায়। Asynchronous Apex ব্যবহারের মাধ্যমে Salesforce প্ল্যাটফর্মের কার্যক্ষমতা, স্থায়িত্ব এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত হয়।

Content added By

Future Methods এবং তার ব্যবহার

204
204

Future Methods হলো Apex-এ ব্যবহৃত একটি Asynchronous Processing পদ্ধতি, যা দীর্ঘমেয়াদি কাজ বা বড় ডেটাসেট প্রসেস করতে ব্যবহৃত হয়। Future Methods আলাদা ট্রানজ্যাকশনে কাজ সম্পন্ন করে, যা Governor Limits এড়াতে সাহায্য করে এবং ব্যাকগ্রাউন্ডে কাজ চালায়। Future Methods সাধারণত ওয়েব সার্ভিস কলআউট, বড় ডেটাসেট প্রসেসিং, এবং এমন কোনো প্রসেসে ব্যবহৃত হয় যা অবিলম্বে সম্পন্ন হওয়ার প্রয়োজন নেই।


Future Method এর বৈশিষ্ট্য

  1. Asynchronous Processing: ব্যাকগ্রাউন্ডে কাজ সম্পন্ন হয় এবং ব্যবহারকারীর ইন্টারফেসে অতিরিক্ত লোড পড়ে না।
  2. Governor Limits এড়ানো: আলাদা ট্রানজ্যাকশনে কাজ সম্পন্ন করায় DML এবং SOQL অপারেশনের গভর্নর লিমিট এড়ানো যায়।
  3. @future Annotation: Future Method-কে @future অ্যানোটেশন দিয়ে ডিফাইন করতে হয়।
  4. Callouts Support: Future Method HTTP কলআউট বা API কলের জন্য ব্যবহৃত হয়, কারণ এটি অন্য ট্রানজ্যাকশনে কাজ করে।

Future Method ডিক্লারেশন

Future Method লিখতে @future অ্যানোটেশন ব্যবহার করতে হয় এবং Method অবশ্যই static হতে হবে। Future Method-এ primitive ডেটা টাইপ (যেমন Integer, String, বা List, Set, Map) পাস করা যায়।

@future
public static void methodName(parameters) {
    // Method logic
}

Future Method এর উদাহরণ

উদাহরণ ১: ডেটা প্রসেসিং এর জন্য Future Method

নিচের উদাহরণে updateAccountIndustry নামে একটি Future Method তৈরি করা হয়েছে, যা Account অবজেক্টের Industry ফিল্ড আপডেট করে।

public class FutureExample {
    @future
    public static void updateAccountIndustry(Set<Id> accountIds) {
        List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Id IN :accountIds];
        for (Account acc : accounts) {
            acc.Industry = 'Technology';
        }
        update accounts;
    }
}
  • @future: Future Method ঘোষণা করেছে।
  • Parameters: Set<Id> প্যারামিটার ব্যবহার করা হয়েছে, যা Account রেকর্ডের আইডি সংরক্ষণ করে।
  • Usage: updateAccountIndustry Future Method ব্যবহার করে Account রেকর্ডের Industry ফিল্ড আপডেট করা হয়েছে।

মেথড কল করা

Set<Id> accountIds = new Set<Id>{'0011j00000XXXXXXX', '0011j00000YYYYYYY'};
FutureExample.updateAccountIndustry(accountIds);

উদাহরণ ২: Callouts এর জন্য Future Method

Future Method ব্যবহার করে Callouts করা যায়, যা সাধারণত অন্য ট্রানজ্যাকশনে সম্পন্ন হয়। নিচের উদাহরণে একটি Future Method performHttpCallout কলআউট তৈরি করা হয়েছে, যা একটি ওয়েব সার্ভিসে HTTP কলআউট করে।

public class CalloutExample {
    @future(callout=true)
    public static void performHttpCallout() {
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint('https://api.example.com/data');
        request.setMethod('GET');

        HttpResponse response = http.send(request);
        System.debug('Response: ' + response.getBody());
    }
}
  • @future(callout=true): Future Method-এ কলআউট সমর্থন করতে callout=true সেট করা হয়েছে।
  • Http Callout: HttpRequest এবং HttpResponse ব্যবহার করে একটি HTTP GET কলআউট করা হয়েছে।

Future Method এর ব্যবহারের ক্ষেত্র

Future Method ব্যবহার করার কিছু সাধারণ পরিস্থিতি:

  1. HTTP Callouts: অন্য সিস্টেমে HTTP কলআউট করার জন্য Future Method ব্যবহার করা হয়, কারণ এটি অন্যান্য ট্রানজ্যাকশনে সম্পন্ন হয় এবং গভর্নর লিমিট এড়ানো যায়।
  2. বড় ডেটাসেট প্রসেসিং: বড় ডেটাসেট প্রসেস করতে চাইলে Future Method আলাদা ট্রানজ্যাকশনে প্রসেসিং চালাতে পারে, যা গভর্নর লিমিটের সীমা এড়াতে সহায়ক।
  3. লং-রানিং প্রসেসিং: লং-রানিং প্রসেস ব্যাকগ্রাউন্ডে চালানোর জন্য ব্যবহার করা হয়, যেমন বড় ব্যাচে ডেটা আপডেট করা বা বিশ্লেষণ চালানো।
  4. উচ্চতর রিসোর্স ব্যবহার: ট্রানজ্যাকশন টাইমআউট এড়ানোর জন্য এবং অতিরিক্ত রিসোর্স ব্যবহার করার জন্য Future Method ব্যবহার করা হয়।

Future Method এর সীমাবদ্ধতা

Future Method ব্যবহারে কিছু সীমাবদ্ধতা রয়েছে:

  1. Primitive Data Types Only: Future Method-এ শুধুমাত্র primitive data type পাস করা যায়, যেমন Integer, String, List, Set, Map ইত্যাদি।
  2. Chaining Future Methods Not Allowed: একটি Future Method থেকে আরেকটি Future Method কল করা যায় না।
  3. No Return Value: Future Method কোনো মান রিটার্ন করতে পারে না।
  4. Transaction Context Limitation: একটি ট্রানজ্যাকশনে সর্বাধিক ৫০টি Future Method কল করা যেতে পারে।

Future Method এবং Queueable Apex এর তুলনা

বৈশিষ্ট্যFuture MethodQueueable Apex
চেইনিংসমর্থিত নয়সমর্থিত
Primitive Limitationশুধুমাত্র primitive ডেটা টাইপ পাস করা যায়Custom এবং Complex data types সমর্থন করে
Return Valueরিটার্ন ভ্যালু সমর্থিত নয়সমর্থিত নয়
Usage Flexibilityকম ফ্লেক্সিবলবেশি ফ্লেক্সিবল

সারসংক্ষেপ

  • Future Methods হলো Apex-এ ব্যবহৃত একটি Asynchronous Processing পদ্ধতি, যা @future অ্যানোটেশন দিয়ে ঘোষণা করা হয়।
  • ব্যবহার ক্ষেত্র: বড় ডেটাসেট, HTTP কলআউট, এবং লং-রানিং প্রসেসিং এর ক্ষেত্রে Future Method ব্যবহৃত হয়।
  • সীমাবদ্ধতা: Future Method শুধুমাত্র primitive data type পাস করতে পারে এবং একে চেইনিং করা যায় না।

Future Methods ব্যবহার করে Salesforce প্ল্যাটফর্মে ব্যাকগ্রাউন্ডে কার্যকরী ডেটা প্রসেসিং, কলআউট, এবং বড় ডেটাসেট পরিচালনা সম্ভব হয়, যা ব্যবহারকারীর অভিজ্ঞতা এবং অ্যাপ্লিকেশনের কার্যকারিতা উন্নত করে।

Content added By

Batch Apex এবং Queueable Apex

251
251

Batch Apex এবং Queueable Apex Salesforce-এ বড় ডেটাসেট প্রক্রিয়াকরণ এবং লং-রানিং প্রসেস হ্যান্ডল করার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ Asynchronous Apex প্রক্রিয়া। এগুলোর মাধ্যমে গভর্নর লিমিট মেনে কার্যক্ষমতা নিশ্চিত করা যায়। নিচে Batch Apex এবং Queueable Apex সম্পর্কে বিস্তারিত আলোচনা করা হলো।


Batch Apex

Batch Apex হলো একটি Asynchronous Apex প্রক্রিয়া, যা বড় ডেটাসেটকে ছোট ছোট ব্যাচে ভাগ করে প্রসেস করে। এটি বড় ডেটাসেট প্রক্রিয়াকরণের জন্য খুবই কার্যকরী এবং গভর্নর লিমিটের মধ্যে থেকে কার্যক্রম সম্পন্ন করে। Batch Apex-এ ডেটা প্রসেসিং ২০০টি রেকর্ডের ব্যাচে সম্পন্ন হয়।

Batch Apex-এর প্রধান বৈশিষ্ট্য

  1. বড় ডেটাসেট প্রক্রিয়া: বড় ডেটাসেটকে একবারে ২০০টি রেকর্ডের ব্যাচে বিভক্ত করে গভর্নর লিমিটের মধ্যে প্রক্রিয়া করা হয়।
  2. পুনঃব্যবহারযোগ্য কোড: Batch Apex কে পুনরাবৃত্তি করে ব্যবহার করা যায়, যা কার্যক্ষমতা বৃদ্ধি করে।
  3. লং-রানিং প্রসেসিং: বড় এবং জটিল লজিক্যাল কাজগুলি Batch Apex ব্যবহার করে ব্যাকগ্রাউন্ডে চালানো যায়।
  4. Customizable Batch Size: একটি ব্যাচ কতগুলো রেকর্ড নিয়ে কাজ করবে তা কাস্টমাইজ করা যায়।

Batch Apex-এর গঠন

Batch Apex ক্লাসে তিনটি মেথড থাকে:

  • start: ডেটা ফিল্টার করে প্রসেসিং শুরু করে।
  • execute: ব্যাচের প্রতিটি অংশে নির্দিষ্ট কাজ সম্পন্ন করে।
  • finish: ব্যাচ প্রসেস সম্পন্ন হলে চূড়ান্ত কাজ সম্পন্ন করে।

উদাহরণ:

public class BatchExample implements Database.Batchable<SObject> {
    public Database.QueryLocator start(Database.BatchableContext BC) {
        return Database.getQueryLocator('SELECT Id, Name FROM Account');
    }

    public void execute(Database.BatchableContext BC, List<SObject> scope) {
        for (SObject s : scope) {
            Account acc = (Account) s;
            acc.Name = acc.Name + ' Updated';
        }
        update scope;
    }

    public void finish(Database.BatchableContext BC) {
        System.debug('Batch process completed.');
    }
}

// Batch Apex চালানোর জন্য
Database.executeBatch(new BatchExample(), 100);
  • start মেথডে একটি SOQL কুয়েরি রয়েছে, যা নির্দিষ্ট রেকর্ড সিলেক্ট করে।
  • execute মেথডে ব্যাচের প্রতিটি অংশে কাজ সম্পন্ন করা হয়েছে।
  • finish মেথডে ব্যাচ প্রসেস সম্পন্ন হলে একটি বার্তা প্রিন্ট করা হয়েছে।

Queueable Apex

Queueable Apex হলো Future Methods-এর একটি উন্নত সংস্করণ, যা চেইনিং এবং কনস্ট্রাক্টর ব্যবহার করে ডেটা প্রক্রিয়াকরণ আরও সহজ করে তোলে। Queueable Apex-এ চেইনড প্রসেস চালানো যায় এবং বড়, জটিল কাজগুলি সহজে হ্যান্ডল করা যায়।

Queueable Apex-এর প্রধান বৈশিষ্ট্য

  1. চেইনিং: Queueable Apex-এ একাধিক কাজ চেইনিং করে পরপর প্রসেসিং করা যায়।
  2. সহজ ডেটা পাসিং: Queueable Apex-এ কনস্ট্রাক্টরের মাধ্যমে ডেটা সহজে পাস করা যায়, যা Future Methods-এ সম্ভব নয়।
  3. এলাস্টিক প্রসেসিং: Queueable Apex-এ জটিল লজিক হ্যান্ডল করা যায় এবং প্রয়োজন হলে আরও Queueable প্রসেস চেইন করা যায়।

Queueable Apex-এর গঠন

Queueable Apex-এ execute মেথড থাকে, যেখানে নির্দিষ্ট Async লজিক চালানো হয়।

উদাহরণ:

public class QueueableExample implements Queueable {
    private String accountName;

    public QueueableExample(String accountName) {
        this.accountName = accountName;
    }

    public void execute(QueueableContext context) {
        List<Account> accounts = [SELECT Id, Name FROM Account WHERE Name = :accountName];
        for (Account acc : accounts) {
            acc.Name = acc.Name + ' Processed';
        }
        update accounts;
    }
}

// Queueable Apex কল করা
QueueableExample job = new QueueableExample('Tech Solutions');
ID jobID = System.enqueueJob(job);
  • execute মেথডে নির্দিষ্ট Async লজিক এবং ডেটা প্রসেসিং চালানো হয়েছে।
  • enqueueJob মেথড Queueable Apex কাজটি সার্ভারের Queue তে পাঠায়, যেখানে এটি Async হিসেবে প্রসেস হয়।

Batch Apex এবং Queueable Apex এর মধ্যে পার্থক্য

বৈশিষ্ট্যBatch ApexQueueable Apex
প্রধান উদ্দেশ্যবড় ডেটাসেট প্রক্রিয়া ও বড় প্রসেসিংFuture Methods-এর বিকল্প ও চেইনিং সক্ষমতা
ব্যাচ প্রসেসিংডেটাকে ব্যাচে ভাগ করে ২০০ রেকর্ড প্রতি প্রসেসিংব্যাচ ভাগ নেই, পুরো কাজ একবারে প্রসেসিং
চেইনিংচেইনিং সমর্থন করে নাচেইনিং সমর্থন করে
কনস্ট্রাক্টর থেকে ডেটা পাসসমর্থন করে নাসমর্থন করে
গভর্নর লিমিটবেশিরভাগ গভর্নর লিমিট সাধারণ লিমিটের তুলনায় বেশিবেশিরভাগ গভর্নর লিমিট Future Methods-এর মতো
ব্যবহার ক্ষেত্রবড় ডেটাসেট প্রক্রিয়া ও লং-রানিং প্রসেসছোট ও মাঝারি লজিক্যাল কার্যক্রম এবং ডেটা পাস

কখন Batch Apex এবং Queueable Apex ব্যবহার করবেন

  • Batch Apex: বড় ডেটাসেট প্রক্রিয়া বা লং-রানিং কাজের জন্য, যেখানে ডেটা একাধিক ব্যাচে ভাগ করে প্রক্রিয়া করতে হবে।
  • Queueable Apex: চেইনিং বা কনস্ট্রাক্টরের মাধ্যমে ডেটা পাস করা দরকার হলে Queueable Apex ব্যবহার কার্যকর।

ভালো অনুশীলন

  1. Batch Size নিয়ন্ত্রণ করুন: বড় ডেটাসেটের জন্য Batch Size নির্ধারণ করুন, যা গভর্নর লিমিট বজায় রাখতে সহায়ক।
  2. চেইনিং বেশি এড়িয়ে চলুন: Queueable Apex-এর মাধ্যমে বারবার চেইনিং করলে গভর্নর লিমিট অতিক্রম হতে পারে।
  3. Exception Logging: Batch এবং Queueable Apex-এ Exception Logging যুক্ত করুন, যাতে ত্রুটি সনাক্ত করা সহজ হয়।
  4. Schedule Integration: Batch Apex বা Queueable Apex-এর সাথে Scheduled Apex ইন্টিগ্রেশন করলে লং-রানিং প্রসেস নির্দিষ্ট সময়ে সম্পন্ন করা যায়।

সারসংক্ষেপ

  • Batch Apex বড় ডেটাসেট প্রক্রিয়াকরণের জন্য ব্যাচ ভিত্তিক প্রসেসিং প্রদান করে এবং বড় লজিক হ্যান্ডল করতে সহায়ক।
  • Queueable Apex Future Methods-এর উন্নত সংস্করণ, যা চেইনিং এবং ডেটা পাসিং সক্ষমতা প্রদান করে।

Batch Apex এবং Queueable Apex ব্যবহার করে বড় এবং জটিল ডেটা প্রক্রিয়াকরণের কার্যক্ষমতা বৃদ্ধি করে Salesforce প্ল্যাটফর্মে উন্নত কার্যক্ষমতা নিশ্চিত করা যায়।

Content added By

Schedulable Apex এবং তার প্রয়োগ

224
224

Schedulable Apex হলো Salesforce-এর একটি Asynchronous Apex ফিচার, যা নির্দিষ্ট সময়ে বা নিয়মিত বিরতিতে নির্দিষ্ট Apex কোড চালানোর জন্য ব্যবহৃত হয়। Schedulable Apex ব্যবহার করে নিয়মিত ডেটা প্রসেসিং, রেকর্ড আপডেট, অথবা ব্যাকগ্রাউন্ডে অন্যান্য কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করা যায়। এটি সাধারণত নির্দিষ্ট সময়ে নির্দিষ্ট কাজ সম্পন্ন করতে সহায়ক।


Schedulable Apex এর মূল বৈশিষ্ট্য

  1. নিয়মিত কার্যক্রম সম্পন্ন: নির্দিষ্ট সময়, দিন, সপ্তাহ, মাস অনুসারে কাজ চালানো সম্ভব হয়।
  2. স্বয়ংক্রিয় কাজ সম্পন্ন: Salesforce প্ল্যাটফর্মে নির্দিষ্ট কাজ নির্দিষ্ট সময়ে স্বয়ংক্রিয়ভাবে চালানো যায়।
  3. Cron Expressions: Schedulable Apex-এ ক্রন এক্সপ্রেশন ব্যবহার করে সময় নির্ধারণ করা যায়, যেমন প্রতিদিন, প্রতি ঘন্টা, নির্দিষ্ট তারিখে বা নির্দিষ্ট সপ্তাহে কাজ চালানো।

Schedulable Apex এর গঠন

Schedulable Apex চালানোর জন্য Schedulable ইন্টারফেস ইমপ্লিমেন্ট করতে হয় এবং execute মেথড ডিফাইন করতে হয়। execute মেথডে নির্দিষ্ট কাজ সম্পন্ন করার জন্য কোড লেখা হয়।

global class ScheduledExample implements Schedulable {
    global void execute(SchedulableContext sc) {
        // নির্দিষ্ট কাজ সম্পন্ন করার কোড
        System.debug('Scheduled job is running');
    }
}

Schedulable Apex চালানোর জন্য Cron Expression

Schedulable Apex নির্দিষ্ট সময়ে চালানোর জন্য System.schedule মেথড এবং Cron Expression ব্যবহার করা হয়। Cron Expression-এ সময় নির্ধারণ করতে পারেন, যা পাঁচটি অংশ নিয়ে গঠিত:

  • Seconds: ০-৫৯
  • Minutes: ০-৫৯
  • Hours: ০-২৩
  • Day of Month: ১-৩১ (বা ?)
  • Month: ১-১২ বা জানুয়ারি থেকে ডিসেম্বর
  • Day of Week: ০-৭ বা রবিবার থেকে শনিবার (০ এবং ৭ রবিবার বোঝায়)

উদাহরণ: Cron Expression

উদাহরণক্রন এক্সপ্রেশনবিবরণ
প্রতিদিন দুপুর ১২টায়0 0 12 * * ?প্রতিদিন দুপুর ১২টায় চালানো
প্রতি ঘন্টায়0 0 * * * ?প্রতি ঘন্টায় চালানো
প্রতি সপ্তাহের সোমবার0 0 10 ? * 2প্রতি সোমবার সকাল ১০টায় চালানো
প্রতি মাসের ১ তারিখে0 0 0 1 * ?প্রতি মাসের ১ তারিখে রাত ১২টায়

Schedulable Apex এর উদাহরণ

নিচে একটি Schedulable Apex ক্লাস এবং Cron Expression ব্যবহার করে Schedulable Apex চালানোর উদাহরণ দেয়া হলো।

global class AccountUpdateScheduler implements Schedulable {
    global void execute(SchedulableContext sc) {
        List<Account> accounts = [SELECT Id, Name FROM Account WHERE LastModifiedDate = LAST_N_DAYS:30];
        for (Account acc : accounts) {
            acc.Name = acc.Name + ' - Updated';
        }
        update accounts;
        System.debug('Scheduled job completed: Account names updated');
    }
}

Schedulable Apex কল করা

// Cron Expression: প্রতিদিন সকাল ৮টায়
String cronExp = '0 0 8 * * ?';
System.schedule('Daily Account Update', cronExp, new AccountUpdateScheduler());
  • এখানে, AccountUpdateScheduler ক্লাসে Account রেকর্ড আপডেট করার জন্য execute মেথডে কোড লেখা হয়েছে।
  • System.schedule মেথড Cron Expression ব্যবহার করে প্রতিদিন সকাল ৮টায় এই কাজ চালাবে।

Schedulable Apex-এর ব্যবহার ক্ষেত্র

  1. নিয়মিত ডেটা প্রসেসিং: Schedulable Apex ব্যবহার করে মাসিক বা সাপ্তাহিক ডেটা প্রসেসিং স্বয়ংক্রিয় করা যায়, যেমন রিপোর্ট তৈরি করা।
  2. ডেটা ক্লিনআপ এবং আর্কাইভিং: অপ্রয়োজনীয় বা পুরোনো রেকর্ড ক্লিনআপ করার জন্য নির্দিষ্ট সময়ে Schedulable Apex চালানো যায়।
  3. রিপোর্ট আপডেট: রিপোর্ট বা অ্যানালাইসিস আপডেট করা এবং তা নিয়মিতভাবে সম্পন্ন করা।
  4. ইন্টিগ্রেশন এবং সিঙ্ক্রোনাইজেশন: বহিরাগত সিস্টেম বা সার্ভারের সাথে ডেটা সিঙ্ক্রোনাইজ করার জন্য নির্দিষ্ট সময়ে চালানো।
  5. স্বয়ংক্রিয় রিমাইন্ডার পাঠানো: নির্দিষ্ট সময়ে ব্যবহারকারীদের রিমাইন্ডার পাঠানোর জন্য।

Schedulable Apex এর সুবিধা

  1. স্বয়ংক্রিয়তা: নির্দিষ্ট সময়ে কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করে, যা ব্যবস্থাপনা সহজ করে।
  2. নিয়মিত কার্যক্রম: মাসিক, সাপ্তাহিক, অথবা দৈনিক ভিত্তিতে কাজ সম্পন্ন করতে সহায়ক।
  3. ব্যাকগ্রাউন্ড প্রসেসিং: Schedulable Apex ব্যাকগ্রাউন্ডে কাজ করে এবং ব্যবহারকারীর ইন্টারফেসে কোনও অতিরিক্ত লোড ফেলে না।
  4. Cron Expression: সময়মাফিক কাজ পরিচালনা করতে সহজ Cron Expression ব্যবহার করা যায়।

Schedulable Apex ব্যবহার করার ভালো অনুশীলন

  1. লগিং এবং মনিটরিং: Schedulable Apex-এ লগিং যুক্ত করা উচিত, যাতে কাজ সম্পন্ন হয়েছে কিনা তা সহজে ট্র্যাক করা যায়।
  2. Governor Limit মেনে চলুন: Schedulable Apex গভর্নর লিমিটের মধ্যে থাকা উচিত এবং কোড অপ্টিমাইজ করা উচিত।
  3. Exception Handling: Exception Handling নিশ্চিত করতে try-catch ব্লক ব্যবহার করুন, যাতে ত্রুটি দেখা দিলে কাজ ব্যাহত না হয়।
  4. Reschedule Functionality: কাজের সময় পরিবর্তন বা পুনরায় শিডিউল করার প্রয়োজন হলে কাস্টম লজিক ব্যবহার করে তা পুনরায় শিডিউল করুন।

সারসংক্ষেপ

Schedulable Apex Salesforce-এ নিয়মিত বিরতিতে স্বয়ংক্রিয় কাজ সম্পন্ন করতে ব্যবহৃত হয়। Cron Expression ব্যবহার করে Schedulable Apex-এ নির্দিষ্ট সময়ে কাজ চালানো যায়। এটি ডেটা প্রসেসিং, ক্লিনআপ, এবং রিমাইন্ডার পাঠানোর জন্য ব্যবহার করা যায়, যা ব্যবসায়িক কার্যক্রম আরও স্বয়ংক্রিয় ও সুনিয়ন্ত্রিত করে তোলে।

Content added By
Promotion